home *** CD-ROM | disk | FTP | other *** search
/ Easy Baby Massage / Easy Baby Massage.iso / pc / content / main.dcr / Internal_119_CastMemberFactory.ls < prev    next >
Encoding:
Text File  |  2007-04-22  |  1.2 KB  |  60 lines

  1. property myMembers, myNextSlot, myCastlib
  2.  
  3. on mInit me
  4.   myMembers = [:]
  5.   myCastlib = 1
  6.   repeat with i = 1 to the number of castLibs
  7.     if castLib(i).name = "temp" then
  8.       myCastlib = i
  9.     end if
  10.   end repeat
  11.   myNextSlot = the number of castMembers of castLib myCastlib + 1
  12. end
  13.  
  14. on mDestroy me
  15.   if the runMode = "Author" then
  16.     put "Erasing temp members"
  17.     repeat with aMemRef in myMembers
  18.       if aMemRef.type <> #empty then
  19.         erase(aMemRef)
  20.         next repeat
  21.       end if
  22.       put "Error deleting " & aMemRef
  23.     end repeat
  24.   end if
  25.   myMembers.deleteAll()
  26. end
  27.  
  28. on mCreate me, id, aMemberType
  29.   if voidp(myMembers) then
  30.     me.mInit()
  31.   end if
  32.   aMemRef = myMembers[id]
  33.   if voidp(aMemRef) then
  34.     aMemRef = new(aMemberType, member(myNextSlot, myCastlib))
  35.     myMembers[id] = aMemRef
  36.     myNextSlot = myNextSlot + 1
  37.   end if
  38.   return myMembers[id]
  39. end
  40.  
  41. on mErase me, aMemRef
  42.   if aMemRef.ilk <> #member then
  43.     aMemRef = myMembers.getaProp(aMemRef)
  44.     if voidp(aMemRef) then
  45.       return #error
  46.     end if
  47.   end if
  48.   if aMemRef.type <> #empty then
  49.     erase(aMemRef)
  50.   end if
  51.   myMembers.deleteOne(aMemRef)
  52.   put myMembers
  53. end
  54.  
  55. on debug_showStatus me
  56.   msg = RETURN
  57.   msg = msg & me.script & RETURN & "myMembers: " & myMembers
  58.   put msg
  59. end
  60.